#ifndef KRAW3DMATERIAL_H
#define KRAW3DMATERIAL_H

#include "kraw/kraw3d.h"

class Kraw3DModel;

class Kraw3DMaterial
{
public:

    static Kraw3DMaterial* Create( const char* );
    static void Cleanup();

    void Register( const char* );

    Kraw3DMaterial();

    virtual bool Init() = 0;
    bool IsValid() { return bIsValid; }

    virtual void* Load( Kraw3DModel* ) = 0;
    virtual void Unload( void* pModelData ) = 0;
    virtual void Render( void* pModelData ) = 0;

    void SetWorldMatrix( const matrix44& );

protected:

    matrix44 mWorld;

    bool bIsValid;
};

#endif /*KRAW3DMATERIAL_H*/
